package mybox.engine.rundfeder.junit;

import java.io.IOException;

import mybox.engine.File4Qcad;
import mybox.engine.Line;
import mybox.engine.QVector;
import mybox.engine.Rectangle;
import mybox.engine.ReferenceIOutput;
import mybox.engine.rundfeder.*;
import junit.framework.TestCase;
import static java.lang.Math.*;


public class RundfederTC extends TestCase {
	
	public void test_Rundfeder() throws SecurityException, IOException {
	
	File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());
	QVector start= new QVector(0,0);	
	
	double hoehe=50.0;
	double seitenAbschluss=2.0;
	double federDicke=1.5;
	int anzahl=8;//
			
	
	Rundfeder rundFeder = new Rundfeder(file4qcad, start, hoehe,seitenAbschluss,federDicke,anzahl);
	
	double testWeite=20;
	Rectangle onRect = new Rectangle(file4qcad,
				new QVector(rundFeder.linksObenStart.x-testWeite,rundFeder.linksObenStart.y-hoehe),
				new QVector(rundFeder.rechtsUntenEnd.x+testWeite,rundFeder.rechtsUntenEnd.y+hoehe)
				);
			
	
	
	rundFeder.draw();
	onRect.draw();
	
	
	
	file4qcad.close();
	
	}
	
	public void test_RundfederElement() throws SecurityException, IOException {
		
		File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());
		QVector start= new QVector(0,0);	
		
		double hoehe=50.0;
		double seitenAbschluss=2.0;
		double federDicke=1.3;
		int anzahl=2;
				
		
		Rundfeder rundFeder = new Rundfeder(file4qcad, start, hoehe,seitenAbschluss,federDicke,anzahl);
		
		double testWeite=4;
		
		Line oben =new Line(file4qcad,
				          new QVector(rundFeder.linksObenStart.x+federDicke,rundFeder.linksObenStart.y),
				          new QVector(rundFeder.rechtsUntenEnd.x+testWeite,rundFeder.rechtsUntenEnd.y+hoehe)
				       );
				
		Line unten = new Line(file4qcad,
		              new QVector(rundFeder.linksObenStart.x+federDicke,rundFeder.linksObenStart.y-hoehe),
		              new QVector(rundFeder.rechtsUntenEnd.x+testWeite,rundFeder.rechtsUntenEnd.y)
		              );
				
		
		
		rundFeder.draw();
		oben.draw();
		unten.draw();
				
		file4qcad.close();
		
		}
	
	public void test_RundFederKette() throws SecurityException, IOException {
		
		File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());
		QVector start= new QVector(0,0);	
		
		double hoehe=50.0;
		double seitenAbschluss=2.0;
		double cut=0.09;
		
		double vollGliedLaenge=5.187+cut;
		
		int federAnzahl=2;
		double federDicke=(vollGliedLaenge-3*cut)/(federAnzahl*2);
				
		int anzahlGlieder=168/2;
		
		
		double zinkenLaenge=4;
		
		RundfederKette federKette = new RundfederKette(
	    		file4qcad, 
	    		start,
	    		anzahlGlieder, 
	    		hoehe, 
	    		seitenAbschluss,
	    		federDicke, 
	    		federAnzahl,
	    		vollGliedLaenge,
	    		zinkenLaenge
	    		);
		
		federKette.draw();
		file4qcad.close();
		
	}
	
	public void test_Viertelkreis() throws SecurityException, IOException {
		
		File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());
		QVector start= new QVector(0,0);	
		
		/*double hoehe=50.0;
		double seitenAbschluss=2.0;
		double federDicke=1.5;
		int anzahl=8;
		*/
		
		int anzahlSektoren=8;
		double innerSektorBreite=1.5;
		double startPhi=0;
		
		
		ViertelKreis viertelkreis  = new ViertelKreis(file4qcad, start, anzahlSektoren, innerSektorBreite, startPhi);
				
		viertelkreis.draw();
		
		file4qcad.close();
		
		}
	
public void test_Viertelkreis2() throws SecurityException, IOException {
		
		File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());
		QVector start= new QVector(0,0);	
		
		/*double hoehe=50.0;
		double seitenAbschluss=2.0;
		double federDicke=1.5;
		int anzahl=8;
		*/
		
		int anzahlSektoren=20;
		double innerSektorBreite=1.5;
		double startPhi=0;
		
		
		ViertelKreis viertelkreis  = new ViertelKreis(file4qcad, start, anzahlSektoren, innerSektorBreite, startPhi);
				
		viertelkreis.draw();
		
		file4qcad.close();
		
		}


	
	public void test_Rundbox() throws SecurityException, IOException {
		
		File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());
		QVector start= new QVector(0,0);
		
		double laenge=70;
		double breite=60;
		double hoehe=50;
		double seitenAbschluss=2.0;
		int anzahlSektoren=10;
		double federDicke=1.3;
		double laserBreite=0.04;
		double materialDicke=4;
		double zinkungsFaktor=1;
				
		RundBoxWrapAussen rundbox = new RundBoxWrapAussen(
				file4qcad, 
				start,
				
				laenge,
				breite,
				hoehe,
				
				seitenAbschluss,
				anzahlSektoren,
				federDicke,
				
				materialDicke,
				laserBreite,
				zinkungsFaktor
				
				);
		
		rundbox.draw();
		file4qcad.close();
			
		}
	
public void test_RundboxWrapInnen() throws SecurityException, IOException {
		
		File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());
		QVector start= new QVector(0,0);
		
		double laenge=70;
		double breite=60;
		double hoehe=50;
		double seitenAbschluss=2.0;
		int anzahlSektoren=10;
		double federDicke=1.3;
		double laserBreite=0.04;
		double materialDicke=4;
		double zinkungsFaktor=1;
				
		RundBoxWrapInnen rundbox = new RundBoxWrapInnen(
				file4qcad, 
				start,
				
				laenge,
				breite,
				hoehe,
				
				seitenAbschluss,
				anzahlSektoren,
				federDicke,
				
				materialDicke,
				laserBreite,
				zinkungsFaktor
				
				);
		
		rundbox.draw();
		file4qcad.close();
			
		}
	
public void test_RundTop() throws SecurityException, IOException {
		
		File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());
		QVector start= new QVector(0,0);
		
		double laenge=100;
		double breite=40;		
		int anzahlSektoren=8;
		double innerSektorBreite=1.5;
		
		double laserBreite=0.04;
		double materialDicke=4;
		double zinkungsFaktor=1;
		RundTopInnen rundTop = new RundTopInnen(
				file4qcad, 
				start,
				laenge,
				breite,
				
				anzahlSektoren, 
				innerSektorBreite,
				
				materialDicke,
				laserBreite,
				zinkungsFaktor);
		
		rundTop.draw();
		
		
		file4qcad.close();
			
		}
		

public void test_RundWrap() throws SecurityException, IOException {
	
	File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());
	QVector start= new QVector(0,0);
	
	double laenge=80;
	double breite=50;	
	double hoehe=50;
	int anzahlSektoren=8;
	double innerSektorBreite=1.5;
	double seitenAbschluss=2.0;
	
	double laserBreite=0.04;
	double materialDicke=4;
	double zinkungsFaktor=1;
			
	RundWrapAussen rundWrap = new RundWrapAussen(
			file4qcad, 
			start,
			laenge,
			breite, 
			hoehe,			
			seitenAbschluss,
			innerSektorBreite,
			anzahlSektoren,
			materialDicke,			 
			laserBreite,
			zinkungsFaktor);
			
			
			
	
	rundWrap.draw();
	file4qcad.close();
		
	}
	

}
